package arbitrage;

import java.io.FileNotFoundException;
import java.util.LinkedList;

public class Tournoi {
	
	private LinkedList<String> joueurs;
	private int[][] resultats;
	private int maxStringLength;
	
	public Tournoi() {
		joueurs = new LinkedList<String>();
		maxStringLength = 0;
	}
	
   // ajouter un guerrier
	public void add(String s) {
		joueurs.add(s);
		maxStringLength = Math.max(maxStringLength, s.length());
	}
   
   // alncer le tournoi
	public void play() throws FileNotFoundException, ProgramLengthException, InstructionException, ModeException {
		int nbJoueurs = joueurs.size();
      resultats = new int[nbJoueurs][nbJoueurs];
      // Un joueur ne peut pas renconter lui-même. On remplit la case par -1.
		for (int i=0; i<nbJoueurs; i++) {resultats[i][i] = -1;}
      
      // Pour chaque rencontre, on crée une Confrontation
		for (int i=0; i<nbJoueurs; i++) {
			for (int j=i+1; j<nbJoueurs; j++) {
				Confrontation c = new Confrontation(joueurs.get(i), joueurs.get(j));
				c.set();
				c.play();
				resultats[i][j] = c.victoire1();
				resultats[j][i] = c.victoire2();
			}
		}
      
      // La suite sert à afficher le tableau.
		for (int i=0; i<nbJoueurs; i++) {
			for (int k=0; k<maxStringLength-joueurs.get(i).length(); k++) {
				System.out.print(" ");
			}
			System.out.print(joueurs.get(i) + " ");
			for (int j=0; j<nbJoueurs; j++) {
				if (resultats[i][j] < 0) {System.out.print("  X  ");}
				else if (resultats[i][j] > resultats[j][i]) {
					if (resultats[i][j] < 10) {System.out.print("  " + resultats[i][j] + "* ");}
					else {System.out.print(" " + resultats[i][j] + "* ");}
				}
				else if (resultats[i][j] == resultats[j][i]) {
					if (resultats[i][j] < 10) {System.out.print("  " + resultats[i][j] + "- ");}
					else {System.out.print(" " + resultats[i][j] + "- ");}
				}
				else {
					if (resultats[i][j] < 10) {System.out.print("  " + resultats[i][j] + "  ");}
					else {System.out.print(" " + resultats[i][j] + "  ");}
				}
			}
			System.out.println();
		}
	}
	
	public static void main(String[] args) throws FileNotFoundException, ProgramLengthException, InstructionException, ModeException {
		Tournoi t = new Tournoi();
		for (int i=0; i<args.length; i++) {t.add(args[i]);}
		t.play();
	}
   
}
